package com.linkgie.galaxyframework.persistence.data;

import java.util.List;

/**
 * 查询执行；
 * <p>
 * 完成查询条件定义后，可执行最终的数据库操作，获得查询结果；
 * 
 * @param <T> 查询结果的记录映射类型；
 */
public interface QueryExecutable<T> {

    /**
     * 查询单条记录，返回映射的对象；
     * 
     * @return
     */
    ObjectQueryExecutor<T> findOne();

    /**
     * 查询符合条件的全部记录，返回映射的所有；
     * 
     * @return
     */
    ObjectQueryExecutor<List<T>> find();

    /**
     * 查询符合条件的记录数量；
     * 
     * @return
     */
    CountQueryExecutor count();

    /**
     * 查询是否存在符合条件的记录；
     * 
     * @return
     */
    ExistenceQueryExecutor exists();

}
